package cn.jeeweb.common.annotate;

import cn.xjzn.framework_Core.ControlType;
import cn.xjzn.framework_Core.DataType;
import cn.xjzn.framework_Core.ModuleServe;
import cn.xjzn.framework_Core.StaticControl;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface UiPropertyField {
    ModuleServe moduleId() default ModuleServe.UNKNOWN;
    /** 在对象中的字段名，若是外键引用，则是被引用对象中的字段名 */
    String propertyName() default "";
    /** 在对象中的字段名 */
    String aliasName() default "";
    String labelText() default "";
    String ownerPropertyName() default "";
    /**
     * 显示控件类型：0简单的静态控件 1数据字典下拉选择控件 2枚举下拉框 3业务对象状态下拉框 4客户自定义字典下拉框 5无数据源的下拉框
     */
    ControlType controlType() default ControlType.SIMPLESTATICCONTROL;
    /**
     * 固定类型的控件类型：0字符串文本框 1整数文本框 2实数文本框 3日期选择控件 4正实数文本框 5电子邮件文本框 6网址文本框 7正整数文本框 8计算文本框 9单选框 10复选框 11多行文本框 15引用文本框 38图片上传及预览控件 1001特殊控件:带时分秒的日期选择控件
     */
    StaticControl staticControl() default StaticControl.STRINGSTATICCONTROL;
    /** 数据类型  */
    DataType dataType() default DataType.STRINGDATATYPE;
    /** 是否引用类型  */
    int isReference() default 0;

    ModuleServe referenceModuleId() default ModuleServe.UNKNOWN;

    /** 数据字典组Code，当controlType为1时，必填 */
    String dictCode() default "";

    /** 显示位置，值越小位置越靠前 */
    int displayPosition() default -1;
    /** 是否可显示 */
    boolean canDisplay() default true;
    /** 是否能用于查询 */
    boolean canSearch() default true;
    /** 在查询结果界面是否显示 */
    boolean isDisplayAsSearchResult() default true;
    /** 是否可为空值 */
    boolean canBeNull() default true;
    /** 是否只读 */
    boolean isReadOnly() default false;
    /** 是否允许修改（针对只读的字段，新建时可编辑。） */
    boolean isSupportNewEdit() default true;
    /** 是否允许变更 */
    boolean isSupportModify() default true;
    /** 字符或者数字的最大长度 */
    int dataSize() default 0;
    /** 实数的精度 */
    int dataPrecision() default 2;
    /** 应用规则的Code：多个以|连接 */
    String controlRule() default "";
    /** 是否需要显示标签 */
    boolean withLabel() default true;
    /** 控件是否独占一行 */
    boolean isSingleRow() default false;
    /** 控件宽度,24列布局单位 */
    String width() default "";
    /** 列表里的列宽度，PX */
    String columnWidth() default "";
    /** 能否打印 */
    boolean canPrint() default true;
    /** 能否导出 */
    boolean canExport() default true;
    /**子对象关联id名称*/
    String relationIdName() default "";
    /**编码生成规则 */
    String codeConfig() default "";
}
